﻿//struct ListNode
//{
//    int val;
//    struct ListNode* next;
//};
//struct ListNode* removeElements(struct ListNode* head, int val)
//{
//    struct ListNode* p = head, * pa = 0, * pp = 0;
//    while (p)
//    {
//        if (head->val == val)
//        {
//            head = head->next;
//            free(p);
//            p = head;
//            continue;
//        }
//        if (p->val == val)
//        {
//            pa->next = p->next;
//            pp = p;
//            p = p->next;
//            free(pp);
//            continue;
//        }
//        pa = p;
//        p = p->next;
//    }
//    return head;
//}

//struct ListNode* reverseList(struct ListNode* head) {
//    struct ListNode* p = head, * pa = 0, * pp = 0;
//    if (!head)
//        return head;
//    pa = p->next;
//    p->next = 0;
//    while (pa)
//    {
//        pp = pa->next;
//        pa->next = p;
//        p = pa;
//        pa = pp;
//    }
//    return p;
//}

//struct ListNode* middleNode(struct ListNode* head) {
//    struct ListNode* p = head;
//    int i = 0, n = 0;
//    while (p)
//    {
//        n++;
//        p = p->next;
//    }
//    if (n % 2 == 0)
//    {
//        n /= 2;
//        for (i = 0; i < n; i++)
//            head = head->next;
//    }
//    else
//    {
//        n /= 2;
//        for (i = 0; i < n; i++)
//            head = head->next;
//    }
//    return head;
//}

//struct ListNode* FindKthToTail(struct ListNode* pListHead, int k) {
//    int n = 0, i = 0;
//    struct ListNode* p = pListHead, * pa = pListHead;
//    while (p)
//    {
//        n++;
//        p = p->next;
//    }
//    n = n - k + 1;
//    for (i = 1; i < n; i++)
//        pa = pa->next;
//    return pa;
//}

//struct ListNode* FindKthToTail(struct ListNode* pListHead, int k) {
//    int n = 0, i = 0;
//    struct ListNode* p = pListHead, * pa = pListHead;
//    if (!p || p->next == 0)
//        return p;
//    while (p)
//    {
//        n++;
//        p = p->next;
//    }
//    if (k > n)
//        return 0;
//    n = n - k + 1;
//    for (i = 1; i < n; i++)
//        pa = pa->next;
//    return pa;
//}

